package com.dlc.shop.dao;


import com.dlc.shop.bean.dto.flow.CustomerRetainedDTO;
import com.dlc.shop.bean.dto.flow.MemberReqDTO;
import com.dlc.shop.bean.param.MemberOverviewParam;
import com.dlc.shop.bean.param.MemberReqParam;
import com.dlc.shop.bean.vo.flow.CustomerRetainVO;
import com.dlc.shop.bean.vo.flow.MemberDealVO;
import com.dlc.shop.bean.vo.flow.UserPayTimeVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;

/**
 * @author yami
 */
@Repository
public interface CustomerAnalysisMapper {

	/**
	 * 获取会员调查信息列表
	 *
	 * @param startTime         起始时间
	 * @param memberReqParam    客户参数
	 * @param paySettlementType
	 * @return 会员调查信息列表
	 */
	List<MemberOverviewParam> generalize(@Param("startTime") Date startTime, @Param("memberReqParam") MemberReqParam memberReqParam, @Param("paySysType") Integer paySettlementType);

	/**
	 * 获取领券会员列表
	 *
	 * @param param
	 * @return 领券会员数
	 */
	Integer countMemberCouponByParam(@Param("param") MemberReqDTO param);

	/**
	 * 获取老会员集合（两年前支付过的用户）
	 * @param param 查询参数
	 * @return
	 */
	List<UserPayTimeVO> listOldMember(@Param("param") MemberReqDTO param);

	/**
	 * 获取会员支付数据
	 * @param param 查询参数
	 * @param oldUsers 老会员集合
	 * @return
	 */
	List<MemberDealVO> getMemberPayData(@Param("param") MemberReqDTO param,
										@Param("oldUsers") List<UserPayTimeVO> oldUsers);

	/**
	 * 获取客户留存分析数据
	 * @param customerRetainedDTO
	 * @return
	 */
	List<CustomerRetainVO> getTradeRetained(@Param("param") CustomerRetainedDTO customerRetainedDTO);


//    List<MemberOverviewListParam> generalizeList(@Param("memberReqParam") MemberReqParam memberReqParam);
}
